package com.bwie.utils;

import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

public class FileUploadUtil {

    /**
     * 将MultipartFile转换为本地临时文件并返回其路径
     * @param file 上传的文件
     * @param tempDir 临时目录，如未指定则使用系统默认临时目录
     * @return 临时文件的路径
     * @throws IOException 处理文件时可能抛出的异常
     */
    public static String convertMultipartFileToPath(MultipartFile file, String... tempDir) throws IOException {
        // 判断文件是否为空
        if (file.isEmpty()) {
            throw new IllegalArgumentException("上传的文件不能为空");
        }
        
        // 确定临时目录
        String tempDirectory = tempDir.length > 0 ? tempDir[0] : System.getProperty("java.io.tmpdir");
        
        // 创建临时目录（如果不存在）
        File directory = new File(tempDirectory);
        if (!directory.exists()) {
            directory.mkdirs();
        }
        
        // 生成唯一文件名，保留原文件扩展名
        String originalFilename = file.getOriginalFilename();
        String fileExtension = "";
        if (originalFilename != null && originalFilename.contains(".")) {
            fileExtension = originalFilename.substring(originalFilename.lastIndexOf("."));
        }
        String fileName = UUID.randomUUID().toString() + fileExtension;
        
        // 创建临时文件
        File tempFile = new File(directory, fileName);
        
        // 将MultipartFile内容转移到临时文件
        file.transferTo(tempFile);
        
        // 返回临时文件的绝对路径
        return tempFile.getAbsolutePath();
    }
    
    /**
     * 删除临时文件
     * @param filePath 文件路径
     * @return 是否删除成功
     */
    public static boolean deleteTempFile(String filePath) {
        if (filePath == null) {
            return false;
        }
        File file = new File(filePath);
        if (file.exists() && file.isFile()) {
            return file.delete();
        }
        return false;
    }
}
